#ifndef __SLL_H__
#define __SLL_H__

typedef unsigned long item_t;
struct node {
    item_t item;
    struct node *next;
};
typedef struct node *link;

typedef void(*destructor)(link);

link new_node(item_t);
link search(item_t);
void insert(link);
void delete(link, destructor);
void traverse(destructor);
void destroy(destructor);
void push(link);
link pop(void);
void reverse(void);
unsigned int count(void);

#endif

